Electronic devices commonly have some type of bulk storage device available to them. A common example is a hard disk drive (HDD). HDDs are capable of large amounts of storage at relatively low cost, with current consumer HDDs available with over one terabyte of capacity.
HDDs generally store data on rotating magnetic media or platters. Data is typically stored as a pattern of magnetic flux reversals on the platters. To write data to a typical HDD, the platter is rotated at high speed while a write head floating above the platter generates a series of magnetic pulses to align magnetic particles on the platter to represent the data. To read data from a typical HDD, resistance changes are induced in a magnetoresistive read head as it floats above the platter rotated at high speed. In practice, the resulting data signal is an analog signal whose peaks and valleys are the result of the magnetic flux reversals of the data pattern. Digital signal processing techniques called partial response maximum likelihood (PRML) are then used to sample the analog data signal to determine the likely data pattern responsible for generating the data signal.
HDDs have certain drawbacks due to their mechanical nature. HDDs are susceptible to damage or excessive read/write errors due to shock, vibration or strong magnetic fields. In addition, they are relatively large users of power in portable electronic devices.
Another example of a bulk storage device is a solid state drive (SSD). Instead of storing data on rotating media, SSDs utilize semiconductor memory devices to store their data, but often include an interface and form factor making them appear to their host system as if they are a typical HDD. The memory devices of SSDs are typically non-volatile flash memory devices.
Flash memory devices have developed into a popular source of non-volatile memory for a wide range of electronic applications. Flash memory devices typically use a one-transistor memory cell that allows for high memory densities, high reliability, and low power consumption. Changes in threshold voltage of the cells, through programming of charge storage nodes (e.g., floating gates or trapping layers) or other physical phenomena (e.g., phase change or polarization), determine the data value of each cell. Common uses for flash memory and other non-volatile memory include personal computers, personal digital assistants (PDAs), digital cameras, digital media players, digital recorders, games, appliances, vehicles, wireless devices, mobile telephones, and removable memory modules, and the uses for non-volatile memory continue to expand.
Unlike HDDs, the operation of SSDs is generally not subject to vibration, shock or magnetic field concerns due to their solid state nature. Similarly, without moving parts, SSDs have lower power requirements than HDDs. However, SSDs currently have much lower storage capacities compared to HDDs of the same form factor and a significantly higher cost for equivalent storage capacities.
In the efficient movement of data between data storage devices and data producer/consumer devices of an electronic system, direct memory access (DMA) has been developed to permit direct access to the storage device while allowing the primary processor of the electronic system to tend to other tasks. In such systems, data is often transferred to or from the storage devices in packets of defined size. These packets when received by a bulk storage device are often stored in volatile storage using a linked-list protocol. This facilitates efficient data transfer without waiting for data to be written to a non-volatile storage area of the bulk storage device.
Flash memory devices generally utilize some non-user data, often referred to as metadata, stored along with the user data. As an example, status indicators, error correction code data, mapping information and the like, generated by the bulk storage device, might be stored along with the user data. Storing these two data types together results in streaming a defined unit of user data to a memory device, and then interrupting the streaming of user data to fill subsequent write latches with the metadata. Once the metadata is written to the memory device, another defined unit of user data may be streamed. This periodic interruption of user data can lead to inefficiencies as the bulk storage device manages the traffic between the different data types to its non-volatile storage areas.
For the reasons stated above, and for other reasons which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for alternative control of data streaming for bulk storage devices.